#ifndef __APLICADOR_RESTRICCIONES_NO_DETERMINISTICAS_H__
#define __APLICADOR_RESTRICCIONES_NO_DETERMINISTICAS_H__

#include "PlanDeCarrera.h"
#include "ContextoDeEjecucion.h"
#include "BaseDeConocimientosManager.h"

using namespace basedeconocimientos;
using namespace modelo;

namespace modelo {

	class AplicadorRestriccionesNoDeterministicas
	{
	public:
		AplicadorRestriccionesNoDeterministicas(ContextoDeEjecucion* contexto);
		~AplicadorRestriccionesNoDeterministicas(void);

		void AplicarRestriccionesNoDeterministicas(PlanDeCarrera* planDeCarrera, ActualizadorPantallaCommand* actualizadorPantalla);
	
	private:
		ContextoDeEjecucion* contexto;
		BaseDeConocimientosManager* baseDeConocimientosManager;
		
		void AplicarRestriccionAjustarConMateriasSinChequeoDeAsistencia(PlanDeCarrera* planDeCarrera);
		void AplicarRestriccionAjustarOmitiendoOptativasPrescindiblesParaLaCarrera(PlanDeCarrera* planDeCarrera);
		void AplicarRestriccionAjustarMateriasDificultosasPorCuatrimestre(PlanDeCarrera* planDeCarrera, ActualizadorPantallaCommand* actualizadorPantalla);
	};
}
#endif